/*!
 * \details Classe para conexão em Bancos de Dados
 * \author Alcione Ferreira\n
 * \since 09/11/2009\n
 * \date 19/04/2012\n
 * \version 2.0.0\n
 * \copyright GNU Public License.
 */

#include <configbodbc.h>
//UnixODBC
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>

using namespace std;

#ifndef __BANCOODBC_H__
#define __BANCOODBC_H__ 1

#define MAX_DATA_WIDTH 300

/**
 * \class BANCOODBC
 * \brief Classe de Conexão com banco de dados UnixODBC
 */
class BANCOODBC
	{
  	public:
    	/** Construtor da Classe BANCOPG */
    	BANCOODBC(string al, string us, string se);
		/** Destrutor da Classe BANCOPG */
    	~BANCOODBC();
    	bool conectado;/**<Atributo que indica se a conexão está ativa ou inativa*/
    	int query_result;/**<Atributo que indica o tipo da consulta:\n 1 - DELETE,DROP,CREATE,UPDATE e INSERT sem retorno\n 2 - SELECT e INSERT com retorno\n 3 - Falha*/
		int tipo;/**<Atributo que especifica o tipo de SGBD (obsoleto).*/
    	int registros;/**<Atributo que armazena a quantidade de registros de uma consulta com retorno.*/
		vector<vector<string> > resultados; /**<Atributo que armazena os resultados de uma consulta SQL com retorno.*/
		int colunas;/**<Atributo que armazena a quantidade de colunas de uma consulta com retorno.*/
		vector<string> nome_colunas;/**<Atributo que armazena o nome das colunas retornadas de uma consulta SQL com retorno.*/
    	string mensagem;/**<String de informação das mensagem do sistema.*/
		/** Método utilizado para fazer uma consulta SQL na base de dados. */	 
    	void executar(char *);
		/** Método utilizado para recuperar os dados de uma consluta com retorno e gravar no vector BANCOPG::resultados.*/
		void resultado();
		/** Método utilizado para iniciar a conexão com o banco de dados.*/
		void conectar();
		string alias;
		string username;
		string senha;

  	private:
		SQLHENV env;
		SQLHDBC conn;
		SQLHSTMT stmt;
		SQLRETURN ret; /* ODBC API return status */
		SQLCHAR outstr[1024],stat[10],msg[200],buffer[200];
		SQLSMALLINT outstrlen;
		SQLINTEGER erro, linha, id;
		SQLSMALLINT mlen, colanz;
	
 	};

#endif /* __BANCOODBC_H__*/
